package cn.itcast.annotation.Parsing;


/**
 * 解析注释
 * 获取注解中定义的属性值
 *
 * @author Mc.Chai
 * @program: JavaWeb
 * @create 2021-12-06-20:11 20:11
 */
@MyAnno(className = "cn.itcast.annotation.Parsing.Demo1",methodName = "show")
public class AnnoDemo {
    public static void main(String[] args) {
        //1.利用反射获取本类的字节码文件对象
        Class<AnnoDemo> myAnnoClass = AnnoDemo.class;
        //2.获取上面的注解对象（多态的使用）
        /**
         * 以下内容所执行的部分功能代码
         * 将MyAnno中定义的抽像方法进行覆写
         *
         * public class ProImpl implements MyAnno{
         *     public void className(){
         *         return "cn.itcast.annotation.Parsing.Demo1"
         *     }
         *     public void methodName(){
         *         return "show";
         *     }
         *
         * }
         *
         * MyAnno本质上是一个接口继承Annotation
         * getAnnotation()返回一个Annotation对象
         * */
        MyAnno annotation = myAnnoClass.getAnnotation(MyAnno.class);

        //3.调用注解对象中的抽象方法，获取返回值
        String className = annotation.className();
        System.out.println(className);
        // Class.forName(className);利用反射得到该类的对象
        String methods=annotation.methodName();
        System.out.println(methods);
    }
}
